home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Workbench Add-On
/
Workbench Add-On - Volume 1.iso
/
Dev
/
Oberon
/
source
/
ProjectOberon
/
Modules.mod
< prev
next >
Wrap
Text File
|
1995-07-02
|
2KB
|
80 lines
(*************************************************************************
$RCSfile: Modules.mod $
Description: Clone of the Project Oberon Modules module. Based on the
interface created by Niklaus Wirth (NW 16.2.86 / 22.9.92).
Created by: fjc (Frank Copeland)
$Revision: 1.1 $
$Author: fjc $
$Date: 1995/02/21 13:49:54 $
Copyright © 1995, Frank Copeland.
This file is part of the Oberon-A Library.
See Oberon-A.doc for conditions of use and distribution.
*************************************************************************)
MODULE Modules;
IMPORT SYSTEM, Kernel;
CONST
ModNameLen* = 32;
TYPE
Module* = POINTER TO ModDesc;
Command* = PROCEDURE;
ModuleName* = ARRAY ModNameLen OF CHAR;
ModDesc* = RECORD
next*: Module;
name*: ModuleName;
module : Kernel.Module;
END;
VAR
res* : INTEGER;
ModList : Module;
PROCEDURE ThisMod* (name: ARRAY OF CHAR): Module;
VAR mod : Kernel.Module; newMod : Module;
BEGIN
res := 1; newMod := ModList;
WHILE (newMod # NIL) & (newMod.name # name) DO
newMod := newMod.next
END;
IF newMod = NIL THEN
mod := Kernel.FindModule (name);
IF mod # NIL THEN
NEW (newMod);
COPY (name, newMod.name); newMod.module := mod;
newMod.next := ModList; ModList := newMod;
res := 0
END
ELSE
res := 0
END;
RETURN newMod
END ThisMod;
PROCEDURE ThisCommand*(mod: Module; name: ARRAY OF CHAR): Command;
VAR cmd : Kernel.Command;
BEGIN
cmd := Kernel.FindCommand (mod.module, name);
IF cmd # NIL THEN res := 0; RETURN SYSTEM.VAL (Command, cmd.proc)
ELSE res := 1; RETURN NIL
END;
END ThisCommand;
PROCEDURE Free*(name: ARRAY OF CHAR; all: BOOLEAN);
BEGIN
res := 0
END Free;
END Modules.